﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;

namespace Sgr.Domain.Uow.Database
{
    /// <summary>
    /// 支持事务回滚的接口
    /// </summary>
    /// <remarks>
    /// 该接口定义了数据库事务回滚的能力：
    /// 1. 提供异步事务回滚功能
    /// 2. 通常与 ITransactionApi 配合使用
    /// 3. 用于工作单元(UnitOfWork)中的事务异常处理
    /// 4. 支持取消操作的事务回滚
    /// </remarks>
    public interface ISupportsRollback
    {
        /// <summary>
        /// 异步回滚事务
        /// </summary>
        /// <param name="cancellationToken">取消令牌</param>
        /// <remarks>
        /// 执行事务回滚操作，撤销事务中的所有更改，
        /// 将数据库状态恢复到事务开始前的状态
        /// </remarks>
        /// <returns>表示异步操作的任务</returns>
        Task RollbackAsync(CancellationToken cancellationToken = default);
    }
}